'''
给定一个 n 个元素有序的（升序）整型数组 nums 和一个目标值 target  ，写一个函数搜索 nums 中的 target，如果 target 存在返回下标，否则返回 -1。

你必须编写一个具有 O(log n) 时间复杂度的算法。

二分查找：
1、使用 while left<=right 作为循环条件
2、使用 //2 整除2
3、左右的边界 left = 0 right=len(nums)-1
4、二分  mid = (left + right)  // 2
5、拿 target 和 nums[mid] 比较

'''
def search(self, nums, target):
    left = 0
    right = len(nums) - 1
    
    while left <= right :
        mid = (left + right)  // 2
        
        if target > nums[mid]:
            left = mid + 1
        elif target < nums[mid]:
            right = mid - 1
        else:
            return mid
    return -1
            
            
